﻿using PersistenceLayer.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PersistenceLayer.DAL
{
	public class BannerDAL
	{
		private Entities Entity;

		public BannerDAL()
		{
			Entity = new Entities();
		}

		public int Adicionar(Banner b)
		{
			Entity.Banner.Add(b);
			Entity.SaveChanges();
			return b.ID;
		}
		public Banner Obter(int ID)
		{
			return Entity.Banner.Where(a => a.ID == ID).SingleOrDefault();
		}
		public List<Banner> Listar()
		{
			return Entity.Banner.ToList();
		}
		public void ChangeOrders(int id, bool goingUp)
		{
			try
			{
				var lb = Entity.Banner.OrderBy(a => a.Ordem).ToList();

				for (int i = 0; i < lb.Count; i++)
				{
					if (lb[i].ID != id)
						continue;

					Banner b = lb[i];
					Banner bAfetado = new Banner();
					Int16 pos = b.Ordem;
					Int16 posAfetado = 0;

					if(goingUp)
					{
						bAfetado = lb[i - 1];
						posAfetado = bAfetado.Ordem;
						bAfetado.Ordem = pos;
						b.Ordem = posAfetado;
					}
					else
					{
						bAfetado = lb[i + 1];
						posAfetado = bAfetado.Ordem;
						bAfetado.Ordem = pos;
						b.Ordem = posAfetado;
					}

					var bOld = Entity.Banner.Where(a => a.ID == b.ID).Single();
					var bOldAf = Entity.Banner.Where(a => a.ID == bAfetado.ID).Single();

					Entity.Entry(bOld).CurrentValues.SetValues(b);
					Entity.Entry(bOldAf).CurrentValues.SetValues(bAfetado);

					break;
				}

				Entity.SaveChanges();
			}
			catch (Exception)
			{
				throw;
			}
		}
		public void Deletar(Banner b)
		{
			Entity.Banner.Remove(b);
			Entity.SaveChanges();
		}
	}
}
